<%#
kind: job_template
name: Module Action - SSH Default
model: JobTemplate
job_category: Modules
description_format: "Module %{action} %{module_spec}"
provider_type: SSH
template_inputs:
- name: pre_script
  description: A script to run prior to the module action
  input_type: user
  required: false
  advanced: true
- name: action
  description: 'The module action enable, install etc.'
  input_type: user
  required: true
  options: "\nlist\ninfo\nenable\ndisable\ninstall\nupdate\nremove\nprovides\nreset"
- name: module_spec
  description: The module specification. module:stream/profile
  input_type: user
  required: false
- name: options
  description: Other optional flags for the action
  input_type: user
  required: false
- name: post_script
  description: A script to run after the module action
  input_type: user
  required: false
  advanced: true
%>

<%
  supported_families = ['Redhat']
  render_error(N_('Unsupported or no operating system found for this host.')) unless @host.operatingsystem && supported_families.include?(@host.operatingsystem.family)
-%>
#!/bin/bash

# Helper function that exits with a particular message and code.
#
# Usage:
#   exit_with_message "Could not do a thing" 2
#
function exit_with_message {
  echo "${1}, exiting..."
  exit $2
}

<% unless input("pre_script").blank? -%>
  # Pre Script
  <%= input("pre_script") %>
  RETVAL=$?
  [ $RETVAL -eq 0 ] || exit_with_message "Pre script failed" $RETVAL
<% end -%>

# Action
dnf -y module <%= input("action") %> <%= input("module_spec") %> <%= input("options") %>
RETVAL=$?
[ $RETVAL -eq 0 ] || exit_with_message " module action failed" $RETVAL

<% unless input("post_script").blank? -%>
  # Post Script
  <%= input("post_script") %>
  RETVAL=$?
  [ $RETVAL -eq 0 ] || exit_with_message "Post script failed" $RETVAL
<% end -%>
